Skip to main content

如何判断一个类的属性来自自身还是原型链

原型链上继承过来的属性不能被hasOwnProperty检测到会返回 false

function Person(name) {
this.name = name
}
let obj = new Person('Tom')

Person.prototype.gender = 'male'
Person.prototype.code = 23

function propertyFormPrototype(obj, prop) {
return !obj.hasOwnProperty(prop) && prop in obj
}
console.log(propertyFormPrototype(obj, 'name')) // false
console.log(propertyFormPrototype(obj, 'code')) // true

参考文章